<template>
  <div style="padding:0 20px;">
    <div class="search-box">
      <Row type="flex">
        <Col class="search-item">
        <span class="search-label">配置名称:</span>
        <Input v-model="searchObj.name"
               @on-keyup="filterSpace"
               placeholder="请输入"
               :maxlength="50">
        </Input>
        </Col>
        <Col class="search-item">
        <span class="search-label">配置类型:</span>
        <Select v-model="searchObjCur.manner">
          <Option v-for="item in mannerList"
                  :value="item.value"
                  :key="item.value">{{ item.label }}</Option>
        </Select>
        </Col>
        <Col class="search-item">
        <Button class="search-btn"
                type="primary"
                @click="doSearch">查询</Button>
        <Button class="search-btn"
                style="margin-left:10px;"
                @click="doReset">重置</Button>
        </Col>
      </Row>
    </div>
    <setting-card :filterData='filterData'
                  @goSetting='goSetting'
                  @handleSwitch="handleSwitch"></setting-card>
    <!-- <div class="page-box"
         style="margin:0;">
      <Page :total="total"
            :current.sync="searchObjCur.page"
            @on-change="handlePage"
            @on-page-size-change="handlePageSize"
            show-sizer
            show-total />
    </div> -->
  </div>
</template>
<script>
import SettingCard from '@/view/components/setting-card/setting-card.vue'
import { setDicSave, getDicQuery } from '@/api/setting'
export default {
  name: 'global_setting',
  components: {
    SettingCard
  },
  data () {
    return {
      mannerList: [
        {
          value: '-1',
          label: '全部'
        },
        {
          value: 1,
          label: '参数配置'
        },
        {
          value: 0,
          label: '开关配置'
        }
      ],
      searchObj: {
        name: ''
      },
      searchObjCur: {
        name: '',
        manner: '-1',
        page: 1,
        size: 10
      },
      allData: [
        {
          'code': 'serverCriticalValue',
          'description': '刷卡器时间与服务器时间的同步临界值',
          'manner': 1,
          'position': null,
          'name': '刷卡器与服务器临界值设置',
          'updateTime': null,
          'dictValue': null,
          'sn': 'moms:globalsetting:serverthreshold',
          'fid': 1
        },
        // {
        //   'code': 'serverCheckInterval',
        //   'description': '刷卡器与服务器时间校验设置',
        //   'manner': 1,
        //   'position': null,
        //   'name': '刷卡器与服务器时间校验设置',
        //   'updateTime': null,
        //   'dictValue': null,
        //   'fid': 2
        // },
        {
          'code': 'marqueeLedColour',
          'description': '设置跑马灯功能的开关，颜色及显示频率',
          'manner': 1,
          'position': null,
          'name': '跑马灯设置',
          'updateTime': null,
          'dictValue': null,
          'sn': 'moms:globalsetting:horselamp',
          'fid': 3
        },
        {
          'code': 'aioOutCoin',
          'description': '设置用户在一体机上的统一游戏币提取额度',
          'manner': 1,
          'position': null,
          'name': '游戏币提取额度设置',
          'updateTime': null,
          'dictValue': null,
          'sn': 'moms:globalsetting:withdrawallimit',
          'fid': 4
        },
        {
          'code': 'pricePerCoin',
          'description': '设置统一的游戏币销售价格标准',
          'manner': 1,
          'position': null,
          'name': '游戏币单价设置',
          'updateTime': null,
          'dictValue': '7',
          'sn': 'moms:globalsetting:coinprice',
          'fid': 6
        },
        {
          'code': 'cardReplacementChargeAmount',
          'description': '设置统一的补卡收费标准',
          'manner': 1,
          'position': null,
          'name': '补卡收费金额设置',
          'updateTime': null,
          'dictValue': null,
          'sn': 'moms:globalsetting:reissuecardfee',
          'fid': 7
        },
        {
          'code': 'nonmemberEwalletCardDeposit',
          'description': '设置统一的临时卡押金标准',
          'manner': 1,
          'position': null,
          'name': '非会员临时卡押金',
          'updateTime': null,
          'dictValue': null,
          'sn': 'moms:globalsetting:tempcarddeposit',
          'fid': 13
        },
        {
          'code': 'memberEwalletCardDeposit',
          'description': '设置统一的会员押金标准',
          'manner': 1,
          'position': null,
          'name': '会员副卡押金',
          'updateTime': null,
          'dictValue': null,
          'sn': 'moms:globalsetting:secondarycarddeposit',
          'fid': 14
        },
        {
          'code': 'enabledUnionPay',
          'description': '设置收银台显示的支付方式',
          'manner': 1,
          'position': null,
          'name': '收银台支付方式显示设置',
          'updateTime': null,
          'dictValue': null,
          'sn': 'moms:globalsetting:paytype',
          'fid': 16
        },
        {
          'code': 'businessDayTime',
          'description': '设置营业日的财务结算时间，根据设定的时间进行报表统计',
          'manner': 1,
          'position': null,
          'name': '营业日结算时间设置',
          'updateTime': null,
          'dictValue': null,
          'sn': 'moms:globalsetting:businesshours',
          'fid': 10
        },
        // {
        //   'code': 'enabledSwingCard',
        //   'description': '',
        //   'manner': 0,
        //   'position': null,
        //   'name': '是否启用在线刷卡',
        //   'updateTime': null,
        //   'dictValue': null
        // },
        {
          'code': 'enablePrintReceipt',
          'description': '设置是否打印小票的开关',
          'manner': 1,
          'position': null,
          'name': '打印小票开关配置',
          'updateTime': null,
          'dictValue': null,
          'sn': 'moms:globalsetting:consumerprint',
          'fid': 17
        },
        // {
        //   'code': 'memberEffectiveDateReminder',
        //   'description': '',
        //   'manner': 1,
        //   'position': null,
        //   'name': '会员有效期提醒/天',
        //   'updateTime': null,
        //   'dictValue': null
        // },
        // {
        //   'code': 'depositCoinEffectiveDate',
        //   'description': '',
        //   'manner': 1,
        //   'position': null,
        //   'name': '托管单(币)有效期/天',
        //   'updateTime': null,
        //   'dictValue': null
        // },
        // {
        //   'code': 'shopArea',
        //   'description': '设置店内分区',
        //   'manner': 1,
        //   'position': null,
        //   'name': '店内区域设置',
        //   'updateTime': null,
        //   'dictValue': null,
        //   'fid': 12
        // },
        {
          'code': 'directorGift',
          'description': '统一设置各角色签赠标准',
          'manner': 1,
          'position': null,
          'name': '签赠设置',
          'updateTime': null,
          'dictValue': null,
          'sn': 'moms:globalsetting:signing',
          'fid': 11
        },
        {
          'code': 'printReceiptCancel',
          'description': '设置非会员彩票打印的最低标准',
          'manner': 1,
          'position': null,
          'name': '非会员彩票打印极值设置',
          'updateTime': null,
          'dictValue': null,
          'sn': 'moms:globalsetting:customerticketprint',
          'fid': 15
        },
        {
          'code': '',
          'description': '自定义更换刷卡器待机动画的物料',
          'manner': 1,
          'position': null,
          'name': '刷卡器待机动画设置',
          'updateTime': null,
          'dictValue': null,
          'sn': 'moms:globalsetting:idlescreen',
          'fid': 8
        },
        {
          'code': '',
          'description': '统一管理固件物料库，具有批量推送门店升级固件的功能，同时可查看门店固件升级的历史记录',
          'manner': 1,
          'position': null,
          'name': '固件升级上传设置',
          'updateTime': null,
          'dictValue': null,
          'sn': 'moms:globalsetting:firmware',
          'fid': 18
        },
        {
          'code': '',
          'description': '积分商城首页小游戏入口',
          'manner': 1,
          'position': null,
          'name': '小游戏入口设置',
          'updateTime': null,
          'dictValue': null,
          'sn': 'moms:globalsetting:gameentryupdate',
          'fid': 25
        },
        {
          'code': '',
          'description': '设定彩票有效期，全国通用',
          'manner': 1,
          'position': null,
          'name': '彩票有效期设定',
          'updateTime': null,
          'dictValue': null,
          'sn': 'moms:globalsetting:ticketexpirydate',
          'fid': 26
        },
        {
          'code': '',
          'description': '设定积分有效期，全国通用',
          'manner': 1,
          'position': null,
          'name': '积分有效期设定',
          'updateTime': null,
          'dictValue': null,
          'sn': 'moms:globalsetting:pointsceneexpirydate',
          'fid': 27
        },
        {
          'code': '',
          'description': '设置统一的兑奖台存币开关功能',
          'manner': 1,
          'position': null,
          'name': '兑奖台存币开关',
          'updateTime': null,
          'dictValue': null,
          'sn': 'moms:globalsetting:exchangecoinswitch',
          'fid': 28
        },
        {
          'code': '',
          'description': '设置统一的全电子币经营模式',
          'manner': 1,
          'position': null,
          'name': '全电子币经营模式',
          'updateTime': null,
          'dictValue': null,
          'sn': 'moms:globalsetting:virtualcoin',
          'fid': 30
        },
        {
          'code': 'coinCardRatio',
          'description': '集卡活动参数设置，全国通用',
          'manner': 1,
          'position': null,
          'name': '集卡活动参数设置',
          'updateTime': null,
          'dictValue': null,
          'sn': 'moms:globalsetting:cardactivityconfig',
          'fid': 29
        }
      ],
      dataList: [],
      filterData: []
    }
  },
  watch: {
    '$route' (newRoute) {
      if (newRoute.name === 'global_setting') {
        this.getDicQuery()
      }
    },
    manner (val) {
      this.searchObjCur.page = 1
      this.doFilterData()
    }
  },
  computed: {
    total () {
      return this.filterData.length
    },
    // disData () {
    //   return this.filterData.slice((this.searchObjCur.page - 1) * this.searchObjCur.size, this.searchObjCur.page * this.searchObjCur.size)
    // },
    manner () {
      return this.searchObjCur.manner
    }
  },
  methods: {
    filterSpace () {
      this.searchObj.name = this.searchObj.name.replace(/\s+/g, '')
    },
    goSetting (fid) {
      this.$router.push({
        name: 'global_setting_page_' + fid
      })
    },
    handlePage (val) {
      this.searchObjCur.page = val
      this.doFilterData()
    },
    handlePageSize (val) {
      this.searchObjCur.size = val
      this.doFilterData()
    },
    doSearch () {
      this.searchObjCur.page = 1
      this.searchObjCur.name = this.searchObj.name
      this.doFilterData()
    },
    doReset () {
      this.searchObj.name = ''
      this.searchObjCur = {
        ...this.searchObjCur,
        name: '',
        manner: '-1',
        page: 1
      }
      this.doFilterData()
    },
    doFilterData () {
      let data = this.dataList.filter(item => {
        return (item.name.indexOf(this.searchObjCur.name) !== -1) && (this.searchObjCur.manner === '-1' ? true : (item.manner === this.searchObjCur.manner))
      })
      data.forEach(item => {
        item.dictValue = typeof item.dictValue === 'string' ? (item.dictValue !== '0') : item.dictValue
      })
      this.filterData = data
    },
    handleSwitch (item) {
      let obj = {
        'merchantId': this.$store.state.user.merchantId,
        'msType': '0'
      }
      obj[item.code] = item.dictValue ? '1' : '0'
      setDicSave(obj).then(res => {
        if (res.data.data.status === 200) {
          this.$Message.success('操作成功')
        }
      })
    },
    getDicQuery () {
      this.dataList = this.allData.filter(item => {
        return this.hasPermission(item.sn)
      })
      let keys = this.dataList.map(item => {
        return item.code !== ''
      })
      if (keys.length > 0) {
        getDicQuery({
          'merchantId': this.$store.state.user.merchantId,
          'msType': '0',
          'dictKeys': keys.join(',')
        }).then(res => {
          if (res.data.status === 200) {
            res.data.data.forEach(data => {
              for (var p in data) {
                this.dataList.forEach(item => {
                  if (p === item.code) {
                    item['updateTime'] = data['updateTime']
                    item['dictValue'] = data[p]
                  }
                })
              }
            })
            this.doSearch()
          } else {
            this.$Message.error(res.data.message)
          }
        })
      } else {
        this.doSearch()
      }
    }
  },
  created () {
    this.getDicQuery()
  }
}
</script>
<style>
@media (min-width: 1600px) {
  .ivu-col-span-xl-7 {
    display: block;
    width: 32%;
    float: left;
    flex: 0 0 auto;
  }
}
.setting-card .ivu-card-body {
  padding: 10px 16px;
}
</style>
